﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using Rodunu.Movies.Contracts;
using Rodunu.Movies.Interfaces.Data;

namespace Rodunu.Movies.Interfaces.Movie
{
    public interface IUserMovies : IRepository<Contracts.UserMovies>
    {
        IList<UserMovies> GetMoviesByUser(long userId);
        IList<UserMovies> GetMoviesByUSerAdvanced(long userId, long? collectionId, int? mediaTypeId, bool? viewed, int? userMoviesStatusId, int? conditionId);
        IList<UserMovies> SearchForMoviesByUser(long userId, string movie);
        IList<UserMovies> SearchForMovies(long userId, string movie);
        UserMovies OwnMovie(long userId, long movieId);
        IList<UserMovies> GetMoviesByLetters(string letters, long userId);
        void LinkMovieToUserMovie(long movieId, long userMovieId);
        IList<UserMovies> GetLinkMovies(long movieId, long userId);
        IList<UserMovies> GetFriendsUserMoviesForMovies(long movieId, long userId);
        IList<UserMovies> SearchForMovies(string movie, long userId);
        IList<UserMovies> GetMovieChildren(long parentId);
        IList<UserMovies> GetFavorites(long userId);
        IList<UserMovies> GetMoviesByFirstLetter(string letter, long userId);
        IList<UserMovies> SearchForFriendsMovies(string movie, long userId);
        int GetCollectionsForUser(long userId);
        int GetTotalMovies(long userId);
        int GetDiscs(long userId);
        int GetBorrowed(long userId);
        IList<UserMovies> GetBorrowedMovies(long userId);
        IList<UserMovies> RecommendUnwatched(long userId);
    }
}
